package com.Sep_One;

import java.util.ArrayList;
import java.util.List;

/**
 * 102. 二叉树的层序遍历
 * 给你二叉树的根节点 root ，返回其节点值的 层序遍历 。 （即逐层地，从左到右访问所有节点）。
 */

public class Solution102 {

    /**
     * 利用list来进行二叉树的层次遍历
     * @param root
     * @return
     */

    public static List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> res=new ArrayList<>();
        dfs(res,root,0);
        return res;
    }

    public static void dfs(List<List<Integer>> res,TreeNode root,int depth){
        if(root==null) return;
        //if(res.size()==depth) res.add()
        if(res.size()<depth)
        {
            res.add(new ArrayList<>());
        }
        res.get(depth-1).add(root.val);
        dfs(res, root.left, depth+1);
        dfs(res, root.right, depth+1);
    }

    public static void main(String[] args) {
        //TreeNode root=new TreeNode(3,9,20,null,null,15,7)
        System.out.println();
    }
}



class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
          this.val = val;
          this.left = left;
          this.right = right;
      }
}
